package com.xique.park.service.command.service;

import com.alibaba.fastjson.JSONObject;
import com.xique.common.core.web.domain.AjaxResult;

import java.util.List;

/**
 * 下发命令service公共类
 *
 * @author: xique
 */
public interface ICommandCommService {

    /**
     * 基本数据格式封装
     *
     * @param parkId      车场ID
     * @param sn          设备序列号
     * @param serviceName 服务名
     * @param version     版本号
     * @return 数据封装结果
     */
    JSONObject getBaseObj(Long parkId, String sn, String serviceName, String version);

    /**
     * 获取车场下所有主设备的设备SN
     *
     * @param parkId 车场ID
     * @return 车场下所有主设备的设备SN
     */
    List<String> getMainDeviceCodesByParkId(Long parkId);

    /**
     * 获取通道的主设备SN
     *
     * @param parkId 车场ID
     * @param laneId 通道ID
     * @return 通道的主设备SN
     */
    String getMainDeviceCodeByLaneId(Long parkId, Long laneId);

    /**
     * API服务返回的结果转化为前端显示
     *
     * @param res /
     * @return /
     */
    JSONObject transformRes(AjaxResult res);

    /**
     * 查询记录下发状态
     *
     * @param className   /
     * @param devCodeList /
     * @param recIdList   /
     * @return 记录下发状态(
     */
    JSONObject getCommandStatus(String className, List<String> devCodeList, List<Long> recIdList);

    /**
     * 查询记录下发状态(车场所有设备)
     *
     * @param className /
     * @param parkId    车场ID
     * @param recIdList /
     * @return 记录下发状态
     */
    JSONObject getCommandStatus(String className, Long parkId, List<Long> recIdList);

    /**
     * 查询记录下发状态
     *
     * @param className /
     * @param laneId    通道ID
     * @param recId     /
     * @return 记录下发状态
     */
    JSONObject getCommandStatus(String className, Long laneId, Long recId);
}
